package cn.sjx.modules.nbiot.entity.common;

/**
 * 常量类
 *
 * @Author: sjx
 * @Date: 2019年08月30日 0030 16:30:22
 */
public class IotProtocolConstants {

    /**
     * 配置文件key常量
     * 是否调试模式（true：调试模式；false：非调试模式）
     */
    public static final String NB_IOT_IS_DEBUGGER_FLAG = "nb-ito.isDebugger.flag";

    // region =============================== 接收地磁信息报文 ===============================

    /**
     * 协议类型type在数据包中出现的位置
     */
    public static final int TYPE_ID_INDEX_OF_PACKAGE = 0;

    /**
     * 地磁数据报文结构说明 (0x20)
     * 地磁状态发生变化，地磁检测器通过 NB-Iot 网络向占道平台发送数据报文。
     */
    public static final int GEOMAGNETIC_RECEIVING_STATE = 0x20;

    /**
     * 地磁心跳包报文结构说明（0X21）
     * 如果需要心跳包，需联系相关销售人员提出要求，出厂前可进行配置，如果未配置有心跳包功能已出厂的设备，无法进行配置修改。
     */
    public static final int GEOMAGNETIC_HEARTBEAT_PACKET = 0x21;

    /**
     * 地磁应答报文
     * 地磁如果接受到的确认报文中含有重置命令，地磁在重置成功后会发送应答给平台
     */
    public static final int GEOMAGNETIC_RESPONSE_MESSAGE = 0x78;

    // endregion ============================================================================


    // region =============================== 发送数据信息报文 ===============================

    /**
     * 发送报文中除数据体外，固定的数据长度
     */
    public static final int MSG_FIX_LENGTH = 3;

    /**
     * 确认报文
     * <p>
     * 地磁检测器和占道平台之间存在ACK机制，占道平台会分析地磁检测器的数据报文和心
     * 跳报文信息，并返回对应的确认报文（返回报文批次号必须和接收到的批次号一致），确认
     * 报文格式如下（注：重置地磁的命令仅在接受到心跳包后下达，暂不支持指令重置）
     * </p>
     */
    public static final int GEOMAGNETIC_RESPONSE_CONFIRMATION_MESSAGE = 0x77;

    // end region ============================================================================
}